@echo off
:: 请求管理员权限
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo 需要管理员权限才能运行此脚本。
    echo 正在请求管理员权限...
    powershell -Command "Start-Process -FilePath '%~dpnx0' -Verb RunAs"
    exit /b
)

echo 正在以管理员权限运行清理脚本...

:: 停止可能占用端口的服务
echo 停止IIS服务...
net stop was /y
timeout /t 2 /nobreak >nul

echo 停止IISExpress...
taskkill /f /im iisexpress.exe 2>nul
timeout /t 1 /nobreak >nul

:: 释放所有可能使用的端口
echo 释放所有端口...
for %%p in (5000 5001 44384 44385) do (
    echo 检查端口 %%p...
    netstat -ano | findstr :%%p
    if not %errorlevel% equ 1 (
        echo 端口%%p被占用，尝试释放...
        for /f "tokens=5" %%a in ('netstat -ano ^| findstr :%%p') do (
            echo 终止进程 PID: %%a
            taskkill /F /PID %%a 2>nul
        )
    ) else (
        echo 端口%%p未被占用。
    )
)

:: 清理HTTPS证书
echo 清理HTTPS证书...
dotnet dev-certs https --clean
dotnet dev-certs https --trust

:: 清理网络保留
echo 清理HTTP.sys预留...
netsh http delete urlacl url=http://+:5000/
netsh http delete urlacl url=https://+:5001/
netsh http delete urlacl url=http://localhost:5000/
netsh http delete urlacl url=https://localhost:5001/
netsh http delete urlacl url=https://+:44384/
netsh http delete urlacl url=https://localhost:44384/

:: 删除开发证书文件
echo 删除证书文件...
if exist "%~dp0\dev_cert.pfx" del /f /q "%~dp0\dev_cert.pfx"

echo 清理完成！现在可以尝试使用admin_start.bat重新启动应用。
echo 按任意键继续...
pause 